博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC快速分页
阅读量:5297 次
发布时间:2019-06-14

本文共 3077 字,大约阅读时间需要 10 分钟。

using System;namespace CWHomeWebSite.Models{    public class PagingInfo    {        //项目总数量        public int TotalItems { get; set; }        //当前索引        public int PageIndex { get; set; }        //分页大小        public int PageSize { get; set; }        //页数        public int PageCount        {            get            {                return (int)Math.Ceiling((decimal)TotalItems / PageSize);            }        }    }}

创建视图对应的ViewModel

using CWHomeWebSite.Data.Entities;using System.Collections.Generic;namespace CWHomeWebSite.Models{    public class PostViewModel    {        //博客集合        public IEnumerable
Posts { get; set; } //分页参数 public PagingInfo PagingInfo { get; set; } }}

处理Controller视图方法

public ActionResult Index(int pageIndex = 1, int pageSize = 2)        {            //获取当前分页数据集合            var posts = this.repository.Posts          .OrderBy(p=>p.UpdateTime)                 .Skip((pageIndex - 1) * pageSize)                .Take(pageSize);            //将当前ViewModel传递给视图            return View(new PostViewModel            {                Posts = posts,                PagingInfo = new PagingInfo                {                    TotalItems = this.repository.Posts.Count(),                    PageIndex = pageIndex,                    PageSize = pageSize                }            });        }

在View中通过Html辅助器扩展方法处理PagingInfo

using CWHomeWebSite.Models;using System;using System.Web.Mvc;namespace CWHomeWebSite.Helper{    public static class PagingHelper    {        //HtmlHelper扩展方法,用于分页        public static MvcHtmlString Pagination(this HtmlHelper html, PagingInfo pageInfo,Func
pageLinks) { var htmlString = pageLinks(pageInfo); return MvcHtmlString.Create(htmlString); } }}
@model CWHomeWebSite.Models.PostViewModel@using CWHomeWebSite.Helper@{    ViewBag.Title = "主页";}
    @foreach (var post in Model.Posts) {
  • @post.Title
    | @post.CreateTime.ToShortDateString()

    @post.Description

    • @Html.ActionLink("更多", "Detail", "Home", new { @post.PostId }, new { @class = "button" })

  • }
@Html.Pagination(Model.PagingInfo, (info) => { var pagingString = "
    "; for (var i = 1; i <= info.PageCount; i++) { if (i == info.PageIndex) { pagingString += "
  • " + i + "
  • "; } else pagingString += "
  • " + i + "
  • "; } pagingString += "
"; return pagingString; })
@Html.Action("RecentWorks", "Work")

url跳转:

@Url.Action("Index", "Home", new { id=1})“生成的html是:”生成的url为: /Home/Index/1“

 

转载于:https://www.cnblogs.com/shy1766IT/p/5246486.html

你可能感兴趣的文章
小程序-canvas在IOS手机层级最高无法展示问题
查看>>
「 Luogu P2285 」打鼹鼠
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
解决win8使用内置管理员不能打开应用商城、天气等问题
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
globalization与全球化
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
关于在Idea 创建Maven项目时,无法在source文件下创建servlet文件问题解决!
查看>>
对 HTTP 304 的理解
查看>>
深入理解css中的margin属性
查看>>
C++ 删除字符串的两种实现方式
查看>>
电容选型
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Spring EL hello world实例
查看>>
百度地图API地理位置和坐标转换
查看>>
MyBatis学习总结(六)——调用存储过程
查看>>
code-代码平台服务器路径
查看>>
离线安装 Visual Studio Express 而不下载整个镜像文件的方法(转载)
查看>>
2017-2018-2偏微分方程复习题解析10
查看>>